import { Injectable, NestMiddleware, UnauthorizedException } from '@nestjs/common';
import { FrontAuthService } from '@/front/service/front-auth.service';
@Injectable()
export class VerifyMiddleware implements NestMiddleware {

  constructor(private frontAuthService:FrontAuthService){}

  use(req: any, res: any, next: () => void) {
    const token = req.headers['authorization'];
    //检查 Token 是否存在
    if (!token) {
      // throw new UnauthorizedException('请先登录');
      return res.status(401).json({ message: '请先登录' });
    }

    try {
      // 验证 Token 是否有效
      const decoded = this.frontAuthService.verifyToken(token)

      // 将解码后的用户信息附加到请求对象中，以便后续使用
      req.user = decoded;

      // 如果 Token 有效，继续处理请求
      next();
    } catch (error) {
      // 如果 Token 无效，抛出异常
      // throw new UnauthorizedException('Invalid token');
      return res.status(401).json({ message: '登录已失效，请重新登录' });
    }
  }
}
